package org.ztr.yanai.blog.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.ztr.yanai.blog.dto.LoginDTO;
import org.ztr.yanai.blog.dto.PageRequestDTO;
import org.ztr.yanai.blog.dto.RegisterDTO;
import org.ztr.yanai.blog.entity.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.ztr.yanai.blog.enums.UserStatusEnum;

import java.util.List;

/**
 * @Author: ZhaoTR
 * @Date: Created in 2025/11/22 10:00
 * @Description: 用户服务接口
 * @Version: 1.0
 */
@SuppressWarnings("unused")
public interface UserService extends UserDetailsService {

    // 用户注册
    User register(RegisterDTO registerDTO);

    // 用户登录
    String login(LoginDTO loginDTO);

    // 新增用户
    User createUser(User user);

    // 根据ID删除用户（逻辑删除）
    void deleteUserById(Long userId);

    // 根据ID查询用户
    User getUserById(Long userId);

    // 分页查询用户列表
    Page<User> listUsersByPage(PageRequestDTO pageRequest);

    // 更新用户信息
    User updateUserInfo(User user);

    // 更新用户（内部使用）
    boolean updateUser(User user);

    // 根据用户名查询用户
    User getUserByUsername(String username);

    // 根据邮箱查询用户
    User getUserByEmail(String email);

    // 批量更新用户状态
    void batchUpdateUserStatus(List<Long> userIds, UserStatusEnum status);

    // 更新用户最后登录时间
    boolean updateLastLoginTime(Long userId);

    // 条件查询用户列表
    List<User> listUsers(String keyword);
}